<?php
/**
* Controlador que maneja las acciones del sistema de administracion de Usuarios
*/
Yii::import('ext.qrcode.QRCode');
class UsuarioController extends Controller{
  
  
   public function actionUsuarios(){
	 $this->render('usuarios');
     
   }
   
   /**
	* accion alta usuario-paciente
	*/
   public function actionAltaPaciente(){
     $sistema=$this->AccesoSistema();
	 $model=new UsuarioForm;
	 if(isset($_POST['ajax']) && $_POST['ajax']==='usuario-form')
	 {
		echo CActiveForm::validate($model);
		Yii::app()->end();
	 }
	 if(isset($_POST['UsuarioForm']))
	 {
	    $model->attributes=$_POST['UsuarioForm'];
		if($model->validate()){
			$nombreusuario=$model->nombre;
			$apellidousuario=$model->apellido;
			$fechanac=$model->fechanac;
			$dniusuario=$model->dni;
			$direccion=$model->direccion;
			$numeroderegistro=$sistema->agregarUsuario($nombreusuario,$apellidousuario,$fechanac,$dniusuario,$direccion);
		if(!$numeroderegistro==false){
		   //usuario creado correctamente
		   $model->nro_usuario=$numeroderegistro;
		   Dialogo::mensaje('Confirmacion de Registro', '<b>N° Usuario:</b> '.$numeroderegistro.'<br><b> Nombre:</b> '.$model->nombre.'<br><b> Apellido: </b>'.
		   $model->apellido.'<br> <b>dni:</b> '.$model->dni.'<br> <b>Fecha Nacimiento:</b> '.$model->fechanac.'<br> <b>Direccion:</b> '.$model->direccion);
		   $this->redirect($this->createUrl('usuarios'));
		}
		else{
			//error al crear usuario
			Dialogo::mensaje('Error', 'Usuario ya registrado con ese DNI');
			}
		}
	 }
	 $this->render('altapaciente',array('model'=>$model));
     
   }
   
    /**
	* accion eliminar usuario-paciente
	*/
   public function actionEliminarpaciente(){
     $sistema=$this->AccesoSistema();
	 $model=new UsuarioForm;
	 if(isset($_POST['buscar'])){
	     if(isset($_POST['valor'])and !$_POST['valor']==''){
				  $resultado=$sistema->eliminarUsuario($_POST['valor'],$_POST['tipo']);	
			 if($resultado==true){
				  //busca usuario, extrae los valores correspondientes y asigna los atributos de UsuarioForm
				  $usuario=$sistema->get_usuario();
				  $model->nombre=$usuario->get_nombre_usuario();
				  $model->apellido=$usuario->get_apellido_usuario();
				  $model->dni=$usuario->get_dni_usuario();
				  $model->direccion=$usuario->get_direccion_usuario();
				  $model->fechanac=$usuario->get_fecha_nacimiento();
				  $model->nro_usuario=$usuario->get_nro_usuario();
				}
			else{
				//mensaje error usuario no encontrado en la base de datos
			      echo Dialogo::mensaje('Busqueda', 'Paciente no encontrado');		
				}
			}
	   }
	 if(isset($_POST['eliminar'])){ //si se presiono boton eliminar 
			$resultado=$sistema->confirmarEliminarUsuario();
			if($resultado){
			   //usuario eliminado correctamente
			    Dialogo::mensaje('Confirmacion', 'El paciente ha sido eliminado correctamente');
				$this->redirect($this->createUrl('usuarios'));
			}
			else{
			   //error al eliminar usuario
			     Dialogo::mensaje('Error', 'Error al eliminar Paciente');
			}
	}	 
	 $this->render('eliminarpaciente',array('model'=>$model));
   
   }
   
   
    /**
	* accion modificar usuario-paciente
	*/
   public function actionModificarpaciente(){
		$sistema=$this->AccesoSistema();
		$model=new ModificarUsuarioForm;
		if(isset($_POST['buscar'])){
	      //verifica si la variable usuario y compara los valores del formulario y los del usuario
	      if(isset($_POST['numero']) and !$_POST['numero']==''){
			  $resultadobusqueda=$sistema->modificarUsuario($_POST['numero'],$_POST['tipo']);
			  if($resultadobusqueda==true){
				  //asigna la variable usuario y extrae los valores correspondientes
				  $usuario=$sistema->get_usuario();
				  $model->nombre=$usuario->get_nombre_usuario();
				  $model->apellido=$usuario->get_apellido_usuario();
				  $model->dni=$usuario->get_dni_usuario();
				  $model->direccion=$usuario->get_direccion_usuario();
				  $model->fechanac=$usuario->get_fecha_nacimiento();
				  $model->nro_usuario=$usuario->get_nro_usuario();
			  }
		      else{
				//mensaje de error usuario no emcontrado
				  Dialogo::mensaje('Error Busqueda', 'Usuario no encontrado');
		      }
		    }
	     }
		if(isset($_POST['modificar'])){ //se presiono boton guardar cambios
				$model->attributes=$_POST['ModificarUsuarioForm'];
				if($model->validate()){
					 $resultadomodificar=$sistema->set_cambios_usuario($model->nombre, $model->apellido, $fechaNacimiento, $model->dni, $model->direccion);
					 if($resultadomodificar==true){	
						echo Dialogo::mensaje('Confirmacion','Datos del paciente guardados correctamente');
					}
					else{
					   //error al eliminar usuario
						 echo Dialogo::mensaje('Error', 'Error al modificar Paciente');
					}
					$this->redirect($this->createUrl('usuarios'));
				}
				
		}
	    $this->render('modificarpaciente',array('model'=>$model));
   }
 
   /**
	* Accion que busca el usuario y verifica que sea el usuario
	*/
	public function actionBuscarpaciente(){
	    $sistema=$this->AccesoSistema();
		$model=new UsuarioForm;
		if(isset($_POST['buscar'])){
	      //verifica si la variable usuario y compara los valores del formulario y los del usuario
	      if(isset($_POST['valor']) and !$_POST['valor']==''){
			  $resultado=$sistema->buscar_usuario($_POST['valor'],$_POST['tipo']);			  
			  if($resultado==true){
			  //reasigna la variable usuario y extrae los valores correspondientes
				  $usuario=$sistema->get_usuario();
				  $model->nombre=$usuario->get_nombre_usuario();
				  $model->apellido=$usuario->get_apellido_usuario();
				  $model->dni=$usuario->get_dni_usuario();
				  $model->direccion=$usuario->get_direccion_usuario();
				  $model->fechanac=$usuario->get_fecha_nacimiento();
				  $model->nro_usuario=$usuario->get_nro_usuario();
			  }
		      else{
				//mensaje de error usuario no emcontrado
				  Dialogo::mensaje('Busqueda', 'Usuario no encontrado');
		      }
		    }
	     }
		 if(isset($_POST['codigo'])){
		        $model->attributes=$_POST['UsuarioForm'];
				if($model->validate()){
					$datos='N° Usuario:'.$model->nro_usuario.', Nombre: '.$model->nombre.', Apellido: '.
					$model->apellido.', Direccion: '.$model->direccion;
					$code=new QRCode($datos);
					$code->create();
				}
		 }
		 if(isset($_POST['limpiar'])){
			$model->unsetAttributes();
		 }
		
	    $this->render('buscarpaciente',array('model'=>$model));	
    }
	
	
    /*
	*Filtro que permite controlar el acceso de usuarios
	*/
	public function filters()
    {
		return array(
            'accessControl',
        );
    }
	
	/*
	*Reglas de Acceso que deniegan o permiten ciertas acciones
	*/
   public function accessRules()
   {
		return array(
		array('allow', //acceso por parte de los administradores a las acciones
		'actions'=>array('index','altapaciente','eliminarpaciente','buscarpaciente','modificarpaciente','usuarios'),
		'roles'=>array('admin','empleado'),
		),
		array('deny',//empleado no puede realizar las siguientes acciones
		'actions'=>array('altapaciente','eliminarpaciente','buscarpaciente','modificarpaciente','usuarios'),
		'roles'=>array('*'),
		),
		array('deny',//deniego toda accion a usuario no autenticado
		'users'=>array('*'),
		),
		);
   }
}
?>